package cn.itcast.nems.product.dao.mapper;

import cn.itcast.nems.product.dao.dataobject.TuitionFeeDO;
import cn.itcast.nems.product.dao.dataobject.TuitionFeePhaseDO;
import cn.itcast.nems.product.dao.dataobject.TuitionFeeSchoolDO;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;

import java.util.List;
import java.util.Set;

/**
 * 学费配置相关
 *
 * @author liyong
 */
@Mapper
public interface TuitionFeeMapper {

    /**
     * 获取所有有效的学费配置
     *
     * @return 学费配置
     */
    List<TuitionFeeDO> selectTuitionFees();

    /**
     * 获取指定班级类型的有效的学费配置
     * @param classTypeIds 班级类型ID
     * @return 学费配置
     */
    List<TuitionFeeDO> selectTuitionFeesByClassTypeIds(@Param("classTypeIds") Set<String> classTypeIds);

    /**
     * 获取阶段学费配置
     *
     * @param tuitionFeeIds 学费配置ID
     * @return 学费阶段配置
     */
    List<TuitionFeePhaseDO> selectTuitionFeePhases(@Param("tuitionFeeIds") Set<Integer> tuitionFeeIds);

    /**
     * 获取学费配置相关校区
     *
     * @param tuitionFeeIds 学费配置ID
     * @return 学费配置的校区
     */
    List<TuitionFeeSchoolDO> selectTuitionFeeSchools(@Param("tuitionFeeIds") Set<Integer> tuitionFeeIds);

    /**
     * 跟进校区ID、班级类型查询学费 配置
     * @param tuitionFeeDO 查询参数
     * @return 学费配置
     */
    TuitionFeeDO findByParam(@Param("fee") TuitionFeeDO tuitionFeeDO) ;

}
